

public class abstractTest {
//    public static void main(String[] args) {
//        /********* begin *********/
//        // 分别实例化Student类与Worker类的对象，并调用各自构造方法初始化类属性。
//        Student s = new Student("张三",20,"学生");
//        Worker w = new Worker("李四",30,"工人");
//        // 分别调用各自类中被复写的talk()方法 打印信息。
//        s.talk();
//        w.talk();
//        /********* end *********/
//
//    }
}
//抽象类的子类必须复写所有的抽象方法后才能被实例化，否则这个子类还是个抽象类。
// 声明一个名为Person的抽象类，在Person中声明了三个属性name age occupation和一个抽象方法——talk()。
abstract class Person {
    /********* begin *********/
 String name;
 int age;
 String occupation;
    public void talk(){
        ;
    }
    /********* end *********/
}

// Student类继承自Person类，添加带三个参数的构造方法，复写talk()方法 返回姓名、年龄和职业信息
class Student extends Person {
    /********* begin *********/
    Student(String n,int age,String occupation){
        this.name = n;
        this.age = age;
        this.occupation = occupation;
    }
    @Override
    public void talk(){
        System.out.println("学生——>姓名："+this.name+"，年龄："+this.age+"，职业："+this.occupation+"！");
    }
    /********* end *********/
}

// Worker类继承自Person类，添加带三个参数的构造方法，复写talk()方法 返回姓名、年龄和职业信息
class Worker extends Person {
    /********* begin *********/
    Worker(String n,int age,String occupation){
        this.name = n;
        this.age = age;
        this.occupation = occupation;
    }
    @Override
    public void talk(){
        System.out.println("工人——>姓名："+this.name+"，年龄："+this.age+"，职业："+this.occupation+"！");
    }
    /********* end *********/

}